
<?php
	App::uses('Tools', 'Lib');
	class FuncionarioController extends AppController {
		//public $layout = 'telaChamados';
		public $layout = 'padrao_tela';
		public $uses = array('Unidade','Area','Pessoa','Status', 'Login', 'DadosTecnico');
		public $array_mgsErro = array();
		public function index(){}

		public function pesquisar_funcionario(){}

		public function cadastrar(){}


		public function buscarPessoasAjax(){
			$this->autoRender = false;
			$pessoa = $this->Pessoa->buscaPessoas($_GET['term']);
			foreach ($pessoa as $k => $conteudo) {
				$this->Login->id = $conteudo['id'];
				$dados_tecnico = $this->Login->read();
				$pessoa[$k]['analista_chamado'] = $dados_tecnico['Login']['analista_chamado'];
			}

			echo json_encode($pessoa);
		}
		public function cadastrar_funcionario(){
			$status = $this->Status->listaStatus();
			$areas = $this->Area->listaAreas();
			$unidades =  $this->Unidade->listaUnidades();

			$this->set('areas', $areas);
			$this->set('unidades', $unidades);
			$this->set('status', $status);

			if($this->request->is('post')){
				$edicao = false;
				$cadastrar_funcionario = $this->request->data('cadastrar_funcionario');
				$dados_tecnico = $this->request->data('dados_tecnico');

				if(!empty($cadastrar_funcionario['id'])){
					$this->Pessoa->id = $cadastrar_funcionario['id'];
					$this->DadosTecnico->id_pessoa = $this->Pessoa->id;

					$edicao = true;
				}

				if(!Tools::validaEmailInsitu($cadastrar_funcionario['email'])){
					$this->Session->write("msg_erro", "Email inválido.");
					$this->redirect(array('action' => 'cadastrar/'));
					return false;
				}
				if(strlen($cadastrar_funcionario['telefone'] < 10)){
					$this->Session->write("msg_erro", "Telefone inválido.");
					$this->redirect(array('action' => 'cadastrar/'));
					return false;
				}

				if($this->Pessoa->save($cadastrar_funcionario)){
					/**
					* @TODO Criar outro método para salvar dados técnicos.
					*/
					if($this->validaDadosTecnicos($dados_tecnico)){
						//if(!$edicao){
							$dados_tecnico['id_pessoa'] = $this->Pessoa->id;
						//}
						if($this->DadosTecnico->save($dados_tecnico)){
							$this->Session->write("msg_sucesso", "Cadastro registrado.");
						}
					}

					else{
						$this->Session->write("msg_erro", "Cadastro não pdoe ser efetivado, verifique os campos.");
					}
				}
				else{
					$this->Session->write("msg_erro", "Cadastro não pode ser efetivado, tente novamente.");
				}

				$this->redirect(array('action' => 'cadastrar/'));
			}
		}

		protected function validaDadosTecnicos($dadosTecnico){

			if(empty($dadosTecnico['id_site'])){
				return false;
			}
			if(empty($dadosTecnico['id_fugro_network'])){
				return false;
			}
			if(empty($dadosTecnico['id_servidor'])){
				return false;
			}
			if(empty($dadosTecnico['id_protheus'])){
				return false;
			}

			return true;

		}
		public function cadastrar_tecnico(){

			if($this->request->is('post')){

				$cadastrarLogin = $this->request->data('cadastrarLogin');

				if(!empty($cadastrarLogin['analista'])){
					$tecnico = $this->Login->buscar_tecnico_analista();

					if(!empty($tecnico)){
						if($tecnico['Pessoa']['email'] != $cadastrarLogin['email']){
							$this->Session->write("msg_erro", "O técnico: " . $tecnico['Pessoa']['nome'] . ", já está definido como análista.");
							$cadastrarLogin['analista'] = 0;
							$this->redirect(array('action' => 'cadastrar/'));
						}
					}
				}
				else{
					$cadastrarLogin['analista'] = 0;
				}

				//Verificar se email esta na tab_pessoa.
				$pessoa = $this->Pessoa->buscaPessoaPorEmail($cadastrarLogin['email']);

				if(is_null($pessoa)){
					$this->Session->write("msg_erro", "E-mail não cadastrado.");
					$this->redirect(array('action' => 'cadastrar/'));
				}

				if($cadastrarLogin['senha'] != $cadastrarLogin['confirmaSenha']){
					$this->Session->write("msg_erro", "As senha digitadas não conferem.");
					$this->redirect(array('action' => 'cadastrar/'));
				}

				$cadastrar = array();
				$cadastrar['email'] = $cadastrarLogin['email'];
				$cadastrar['senha'] = $this->Auth->password($cadastrarLogin['senha']);
				$cadastrar['analista_chamado'] = $cadastrarLogin['analista'];


				if(!empty($cadastrarLogin['id_pessoa'])){
					$this->Login->id = $cadastrarLogin['id_pessoa'];//Editar
					$login_base = $this->Login->read();
				}
				else{
					$cadastrar['id_pessoa'] = $pessoa['id'];//Novo registro.
				}

				if($this->Login->save($cadastrar)){
					$this->Session->write("msg_sucesso", "Login registrado.");
				}
				else{
					$this->Session->write("msg_erro", "Cadastro login não realizado.");
				}
				$this->redirect(array('action' => 'cadastrar/'));
			}


		}
	}
?>